﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;

namespace TemControl
{
   public  class SqliteHelper
    {
        //格式：(基本的） Data Source = filename; Version=3;
        //      带密码的 Data Source = filename; Version=3;Password=myPassword;
        public static string ConStr { get; set; }
           = "Data Source = TemControl.db; Version=3";

        public static int InsDelUpdate(string sql)
        {
            //1.创建连接对象 
            SQLiteConnection sqlConnection = new SQLiteConnection(ConStr);
            //2.创建命令对象
            SQLiteCommand sqlCommand = new SQLiteCommand(sql, sqlConnection);
            try
            {
                //3.尝试打开数据库
                sqlConnection.Open();
                //4.尝试执行Sql命令 会返回受影响的行数 
                return sqlCommand.ExecuteNonQuery();
            }
            catch (Exception)
            {
                //方案一：如果有异常，往上抛异常，让调用者处理
                throw;
                //方案二：如果你不想让调用者处理，那么久不要throw,
                //并且在这里写日志记录 什么时间 发生了什么事
            }
            finally
            {
                //关闭连接
                sqlConnection.Close();
            }
        }
        /// <summary>
        /// 查询(返回读取流)
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static SQLiteDataReader GetReader(string sql)
        {
            //1.创建连接对象
            SQLiteConnection sqlConnection = new SQLiteConnection(ConStr);
            //2.创建sql命令
            SQLiteCommand sqlCommand = new SQLiteCommand(sql, sqlConnection);
            try
            {
                //3.尝试打开数据库
                sqlConnection.Open();
                //4.尝试执行Sql语句 执行完成后自动关闭连接资源
                return sqlCommand.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            }
            catch (Exception ex)
            {
                sqlConnection.Close(); //出现异常关闭连接
                throw;
            }

        }
    }
}
